/**
 * Copyright © 2009 Qasky. All rights reserved.
 *
 * 校验规则
 *
 *
 * History:
 * (author, date, desc)
 * (Wang Hongya, 20191209, 添加注释)
 *
 * @format
 * @author Wang Hongya
 * @version 0.0.0 2019/12/09
 */

const verify = {
    validePassword (rule, value, callback) {
        const res1 = /^[a-zA-Z0-9]+$/  //英文、数字
        if (!value || value.trim().length === 0) {
            callback();
        }else if (!res1.test(value)) {
            callback(new Error('请输入数字、英文字母的字符'));
        } else if(value.length > 12 || value.length < 6){
            callback(new Error('请输入6-12位有效密码'));
        }  else {
            callback();
        }
    },
    validateDeviceName (rule, value, callback) {
        const res1 = /^[\u4e00-\u9fa5_a-zA-Z0-9-&]+$/;  //中文、数字、字母、&、_和-字符
        if (!value || value.trim ().length === 0) {
            callback ();
        } else if (!res1.test (value)) {
            callback (new Error ('请输入中文、数字、字母、&、_和-字符'));
        } else {
            var realLength = 0;
            var charCode = -1;
            for (var i = 0; i < value.length; i++) {
                charCode = value.charCodeAt (i);
                if (charCode >= 0 && charCode <= 128) {
                    realLength += 1;
                } else {
                    realLength += 3;
                }
            }
            if (realLength > 40) {
                callback (new Error ('请输入小于40个字符，中文计3个字符'));
            } else {
                callback ();
            }

        }
    },
    validateSerialNumber(rule, value, callback) {
        const res = /^[0-9]+$/;  //数字
        if (!value || value.length === 0) {
            callback();
        } else if (value.length !== 16) {
            callback(new Error('请输入16位数字'));
        } else if (!res.test(value)) {
            callback(new Error('请输入16位数字'));
        } else {
            callback();
        }
    },
    validateManufacturer (rule, value, callback) {
        const res1 = /^[\u4e00-\u9fa5_a-zA-Z0-9-&]+$/;  //中文、数字、字母、&、_和-字符
        if (!value || value.trim().length === 0) {
            callback();
        } else if (!res1.test(value)) {
            callback(new Error('请输入中文、数字、字母、&、_和-字符'));
        } else {
            var realLength = 0;
            var charCode = -1;
            for(var i = 0; i < value.length; i++) {
                charCode = value.charCodeAt(i);
                if(charCode >= 0 && charCode <= 128) {
                    realLength += 1;
                } else {
                    realLength += 3;
                }
            }
            if(realLength > 40) {
                callback(new Error('请输入小于40个字符，中文计3个字符'));
            } else {
                callback();
            }

        }
    },
    validateAddress (rule, value, callback){
        const res1 = /^[\u4e00-\u9fa5_a-zA-Z0-9-&]+$/;  //中文、数字、字母、&、_和-字符
        if (!value || value.length === 0) {
            callback();
        } else if (value.trim().length > 50) {
            callback(new Error('请输入小于50个字符'));
        } else if (!res1.test(value)) {
            callback(new Error('请输入中文、数字、字母、&、_和-字符'));
        } else {
            callback();
        }
    },
    validateNameNew(rule, value, callback) {
        const res1 = /^[\u4e00-\u9fa5_a-zA-Z0-9]+$/;  //中文、英文、数字或下划线
        //let len = value.replace(/[\u0391-\uFFE5]/g,"aa").length;
        if (!value || value.length === 0) {
            callback()
        } else if (value.length > 30) {
            callback(new Error('请输入小于30个字符，中文计2个字符长度'))
        } else if (!res1.test(value)) {
            callback(new Error('请输入中文、英文、数字或下划线字符'))
        } else {
            callback()
        }
    },
    valKeyCipher( rule, value, callback ){
        const res1 = /^[a-fA-F0-9]+$/  //英文、数字
        if (!value || value.length === 0) {
            callback ()
        } else if (!res1.test (value)) {
            callback (new Error ('请输入A-F,a-f,0-9的字符'))
        }else if(rule.field === 'iv'){
            if (value.length !== 16 && value.length !== 32) {
                callback(new Error('请输入16位或32位Hex字符'));
            }else {
                callback ()
            }
        } else {
            callback ()
        }
    },
    valNum2( rule, value, callback ){
        const res1 = /^[a-zA-Z0-9]+$/  //英文、数字
        if (!value || value.length === 0) {
            callback ()
        } else if (value.length > 32) {
            callback(new Error('最多可输入32个字符'));
        } else if (!res1.test (value)) {
            callback (new Error ('请输入英文或数字字符'))
        } else {
            callback ()
        }
    },
    // 验证汉字，字母、数字、下划线和-字符
    validateName(rule, value, callback) {
        const reg = /^[\u4e00-\u9fa5_a-zA-Z0-9\/-]+$/
        if (!value || value.length === 0) {
            callback()
        } else if (!reg.test(value)) {
            callback(new Error('请输入汉字、字母、数字、_或-字符'))
        }  else if (value.length > 30) {
            callback(new Error('最多可输入30个字符'))
        }else {
            callback()
        }
    },

    // 验证汉字，字母、数字、下划线和-字符
    validateTextArea(rule, value, callback) {
        const reg = /^[\u4e00-\u9fa5_a-zA-Z0-9\/-]+$/
        if (!value || value.length === 0) {
            callback()
        } else if (!reg.test(value)) {
            callback(new Error('请输入汉字、字母、数字、_或-字符'))
        }  else if (value.length > 200) {
            callback(new Error('最多可输入200个字符'))
        }else {
            callback()
        }
    },
    validateDictCode(rule, value, callback) {
        const reg = /^[\u4e00-\u9fa5_.+a-zA-Z0-9\/-]+$/
        if (!value || value.length === 0) {
            callback()
        } else if (!reg.test(value)) {
            callback(new Error('请输入汉字、字母、数字、_、-、.和+字符'))
        }  else if (value.length > 30) {
            callback(new Error('最多可输入30个字符'))
        }else {
            callback()
        }
    },
    validateEName(rule, value, callback) {
        const reg = /^[a-zA-Z]+$/
        if (!value || value.length === 0) {
            callback()
        } else if (!reg.test(value)) {
            callback(new Error('请输入字母字符'))
        } else {
            callback()
        }
    },
    validateThirdLibraryName(rule, value, callback) {
        const reg = /^[\u4e00-\u9fa5a-zA-Z0-9]+$/
        if (!value || value.length === 0) {
            callback()
        } else if (!reg.test(value)) {
            callback(new Error('请输入汉字、字母、数字字符'))
        } else {
            callback()
        }
    },
    validateUnitName(rule, value, callback) {
        const reg = /^[\u4e00-\u9fa5_&a-zA-Z0-9-]+$/
        if (!value || value.length === 0) {
            callback()
        } else if (!reg.test(value)) {
            callback(new Error('请输入汉字、字母、数字、&、_或-字符'))
        } else if (value.length > 30) {
            callback('文字内容多于30字符')
        } else {
            callback()
        }
    },
    validateIDNew(rule, value, callback) {
        const res1 = /[^0-9a-zA-Z-_/@#$*.]/g;///^[A-Za-z0-9]+$/;
        if (!value || value.length === 0) {
            callback();
        } else if (value.length > 32) {
            callback(new Error('请输入小于32个字符'));
        } else if (res1.test(value)) {
            callback(new Error('请输入数字、英文字母、-@#$*.或者下滑线组成的字符'));
        } else {
            callback();
        }
    },
    validateHundredName(rule, value, callback) {
        const reg = /^[\u4e00-\u9fa5_&a-zA-Z0-9-:、：。，]+$/
        if (!value || value.length === 0) {
            callback()
        } else if (!reg.test(value)) {
            callback(new Error('请输入汉字、字母、数字、或&、_-：。，字符'))
        } else if (value.length > 255) {
            callback('文字内容多于255字符')
        } else {
            callback()
        }
    },
    validateUserName(rule, value, callback) {
        const reg = /^[a-zA-Z0-9-]+$/
        if (!value || value.length === 0) {
            callback()
        } else if (!reg.test(value)) {
            callback(new Error('请输入字母、数字或-字符'))
        }  else if (value.length > 32) {
            callback(new Error('最多可输入32个字符'))
        } else {
            callback()
        }
    },
    valideFilePath(rule, value, callback) {
        const res1 = /^[a-zA-Z0-9_.+=-]+$/ //英文、数字-_.+=字符
        let indexFileName = value.lastIndexOf('\\')
        if (indexFileName === -1) {
            indexFileName = val.lastIndexOf('/')
        }
        let fileName = value.substr(indexFileName + 1)
        let indexDot = fileName.lastIndexOf('.')
        if (!value || value.length === 0) {
            callback()
        } else if (fileName.substr(indexDot + 1, 3) !== 'so') {
            callback(new Error('请选择so文件'))
        } else if (fileName.length > 20) {
            callback('文字名多余20字符')
        } else if (!res1.test(fileName)) {
            callback(new Error('请选择文件名只能以数字、字母、-、_、.、+、=命名的so文件'))
        } else {
            callback()
        }
    },
    validateID3(rule, value, callback) {
        const res1 = /^[a-zA-Z0-9_@.]+$/;  //英文、数字或下划线
        if (!value || value.length === 0) {
            callback();
        } else if (value.length > 48) {
            callback(new Error('请输入小于48个字符'));
        } else if (!res1.test(value)) {
            callback(new Error('请输入英文、数字、或@._字符'));
        } else {
            callback();
        }
    },
    // 验证英文、数字或下划线
    validateID(rule, value, callback) {
        const res1 = /^[a-zA-Z0-9_.-]+$/;  //英文、数字或下划线
        if (!value || value.length === 0) {
            callback();
        } else if (value.length > 16) {
            callback(new Error('请输入小于16个字符'));
        } else if (!res1.test(value)) {
            callback(new Error('请输入字母、数字、_、-或.字符'));
        } else {
            callback();
        }
    },
    validateKey(rule, value, callback) {
        const res1 = /^[a-zA-Z0-9_.-=]+$/;  //英文、数字或下划线
        if (!value || value.length === 0) {
            callback();
        } else if (value.length > 16) {
            callback(new Error('请输入小于16个字符'));
        } else if (!res1.test(value)) {
            callback(new Error('请输入字母、数字、_、-、.或=字符'));
        } else {
            callback();
        }
    },
    // 验证待测设备id，英文、数字或下划线
    validateID2(list, rule, value, callback) {
        let flag = false
        list.forEach(item => {
            if (item.dId === value) {
                flag = true
            }
        })
        const res1 = /^[a-zA-Z0-9_.-]+$/ //英文、数字或下划线
        if (!value || value.length === 0) {
            callback()
        } else if (!res1.test(value)) {
            callback(new Error('请输入字母、数字、_、-或.字符'))
        } else if (value.length > 30) {
            callback(new Error('文字内容多于30字符'))
        } else if (flag) {
            callback(new Error('设备ID已存在，请重新填写'))
        } else {
            callback()
        }
    },
    // 验证英文、数字或下划线
    IdValidate(value) {
        const res1 = /^[a-zA-Z0-9_:-]+$/ //英文、数字或下划线
        if (!value || value.length === 0) {
            return false
        } else if (!res1.test(value)) {
            return false
        } else if (value.length > 30) {
            return false
        } else {
            return true
        }
    },
    // 验证英文、数字或下划线
    validatePassword(rule, value, callback) {
        const res1 = /^[a-zA-Z0-9_:-]+$/ //英文、数字或下划线
        if (!value || value.length === 0) {
            callback()
        } else if (!res1.test(value)) {
            callback(new Error('请输入字母、数字、_、-或：字符'))
        } else if (value.length > 16) {
            callback(new Error('最多可输入16个字符'))
        } else {
            callback()
        }
    },
    // 验证输入A-F,a-f,0-9的字符：
    validate16scale(rule, value, callback) {
        const res1 = /^[a-fA-F0-9]+$/ //只能输入A-F,a-f,0-9的字符
        if (!value || value.length === 0) {
            callback()
        } else if (value.length >0) {
            if(value.length >2){
                if (value.substr(0, 2) !== '0x') {
                    callback(new Error('请输入以0x开头A-F、a-f、0-9字符，且长度为18位字符'))
                } else if (!res1.test(value.slice(2, value.length))) {
                    callback(new Error('请输入以0x开头A-F、a-f、0-9字符，且长度为18位字符'))
                }else if (value.length !== 18) {
                    callback('请输入以0x开头A-F、a-f、0-9字符，且长度为18位字符')
                }
            }else{
                callback(new Error('请输入以0x开头A-F、a-f、0-9字符，且长度为18位字符'))
            }
        } else {
            callback()
        }
    },
    validate128scale(rule, value, callback) {
        const res1 = /^[a-fA-F0-9-_]+$/ //只能输入A-F,a-f,0-9的字符
        if (!value || value.length === 0) {
            callback()
        } else if (!res1.test(value)) {
            callback(new Error('请输入A-F,a-f,0-9-的字符，且长度为0-128位字符'))
        } else if (value.length > 128) {
            callback('最多输入128位字符')
        } else {
            callback()
        }
    },
    // 验证输入A-F,a-f,0-9的字符：
    validateIVscale(rule, value, callback) {
        const res1 = /^[a-fA-F0-9]+$/ //只能输入A-F,a-f,0-9的字符
        if (!value || value.length === 0) {
            callback()
        } else if (!res1.test(value)) {
            callback(new Error('请输入A-F,a-f,0-9的字符'))
        } else {
            if (value.length !== 16 && value.length !== 32) {
                callback(new Error('请输入16位或32位Hex字符'));
            }else {
                callback ()
            }
        }
    },
    // 验证字典值的校验输入A-F,a-f,0-9的字符：
    validateAttrDic(rule, value, callback) {
        const res1 = /^[a-fA-F0-9x]+$/ //只能输入A-F,a-f,0-9的字符
        if (!value || value.length === 0) {
            callback()
        } else if (!res1.test(value)) {
            callback(new Error('请输入A-F、a-f、0-9或x字符'))
        } else {
            callback()
        }
    },
    // 验证只能为数字并且数字最多带6位小数
    validateNum(rule, value, callback) {
        const res1 = /^\d+(\.\d{0,6})?$/
        if (!value || value.length === 0) {
            callback()
        } else if (!res1.test(value)) {
            callback(new Error('请输入数字并且最多带6位小数'))
        } else {
            callback()
        }
    },
    // 验证只能为数字并且数字最多带4位小数
    validatePointNum(rule, value, callback) {
        const res1 = /^\d+(\.\d{0,4})?$/
        if (!value || ('' + value).length === 0) {
            callback()
        } else if (value < 0 || value > 100) {
            callback(new Error('请输入0-100之间的数值'))
        } else if (!res1.test(value)) {
            callback(new Error('请输入数字并且最多带4位小数'))
        } else {
            callback()
        }
    },
    // 验证只能为正数字
    validateInteger(rule, value, callback) {
        const res1 = /^[0-9]*[1-9][0-9]*$/
        if (!value || value.length === 0) {
            callback()
        } else if (!res1.test(value)) {
            callback(new Error('请输入0或正整数'))
        } else if (value.length > 6) {
            callback('最多输入6位正整数')
        } else {
            callback()
        }
    },
    /**
     * 判断是否是.bin的文件
     * @param rule
     * @param value
     * @param callback
     */
    validateBin(rule, value, callback) {
        if (!value) {
            callback()
        } else if (value.substring(value.length - 3, value.length) !== 'bin') {
            callback(new Error('请选择bin文件'))
        } else {
            callback()
        }
    },
    // 验证只能为正数字且不大于60
    intValidate(rule, value, callback) {
        const res1 = /^[0-9]*[1-9][0-9]*$/
        if (!value) {
            callback()
        } else if (!res1.test(value)) {
            callback(new Error('请输入0或正整数'))
        } else if (parseInt(value) > 60) {
            callback('请输入不大于60的正整数')
        } else {
            callback()
        }
    },
    validatePhone(rule, value, callback) {
        const res3 = /^1[3|4|5|6|7|8|9][0-9]{9}$/
        const res4 = /0\d{2,3}-\d{7,8}$/
        if (!value || value.length === 0) {
            callback()
        } else if (!(res3.test(value) || res4.test(value))) {
            callback(new Error('请输入合法联系方式'))
        } else {
            callback()
        }
    },
    validateIP(rule, value, callback) {
        const reg =
            '^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$'
        if (!value || value.trim().length === 0) {
            callback()
        } else if (value.match(reg) === null) {
            callback(new Error('请输入合法IP'))
        } else if (RegExp.$1 <= 0 || RegExp.$4 <= 0) {
            callback(new Error('请输入合法IP'))
        } else {
            callback()
        }
    },
    validateIpAdreeSix(rule, value, callback) {
        const reg =/^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*$/
        if (!value || value.trim().length === 0) {
            callback()
        } else if (!reg.test (value)) {
            callback(new Error('请输入合法IPv6格式'))
        } else {
            callback()
        }
    },
    ipAddress(str) {
        const reg =
            '^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\.(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\.(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\.(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$'
        if (str.trim().length === 0) {
            return false
        } else if (str.match(reg) === null) {
            return false
        } else return RegExp.$1 > 0 && RegExp.$4 > 0
    },
    // 验证描述汉字，字母、数字、下划线和-字符
    validateDescripte(rule, value, callback) {
        const reg = /^[\u4e00-\u9fa5_a-zA-Z0-9，。,.;；-]+$/
        if (!value || value.trim().length === 0) {
            callback()
        } else if (!reg.test(value)) {
            callback(new Error('请输入汉字、字母、数字、_或-，。；字符'))
            return
        } else if (value.length > 128) {
            callback(new Error('文字内容多于128字'))
            return
        }
        callback()
    },
    validateSfz(rule, value, callback) {
        const res2 = /^[1-9]\d{5}(18|19|20)?\d{2}(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8])))\d{3}(\d|[xX])?$/
        if (!value || value.trim().length === 0) {
            callback()
        } else if (value.trim().indexOf(' ') !== -1) {
            callback(new Error('身份证号包含空格'))
        } else if (!res2.test(value)) {
            callback(new Error('请输入合法身份证号'))
        } else if (value.trim().length !== 15 && value.trim().length !== 18) {
            callback(new Error('请输入合法身份证号'))
        } else if (value.length > 32) {
            callback(new Error('最多可输入32个字符'))
            return
        }else {
            callback()
        }
    },
    // 限制下拉框多选状态最多选择3个
    limitSelect(rule, value, callback) {
        if (value !== undefined && value.length > 3) {
            callback(new Error('最多选择三家单位'))
            return
        }
        callback()
    },
    reg: "[`~!@#-_$%^&*()+=|{}':;',\\[\\]<>/?~！@#￥%……&*（）——+|{}【】《》 ‘；：”“’。，、？]",
    formalNum(event) {
        let a = event.target.value
        a = a.replace(/\.{2,}/g, '.')
        a = a.replace(/[^\d\.]/g, '')
        a = a.replace(/^(\d+)\.(\d{6}).*$/, '$1.$2')
        return a
    },
    /**
     * 校验输入30个字符
     * @param event
     * @returns {*}
     */
    formalSpace(event) {
        let a = event.target.value
        a = a.replace(/\s/g, '')
        return a
    },
    /**
     * 校验输入30个字符
     * @param event
     * @returns {*}
     */
    formalSpace30(event) {
        let a = event.target.value
        a = a.replace(/\s/g, '')
        if (a.length > 30) {
            a = a.substring(0, 30)
        }
        return a
    },
    /**
     * 校验输入自定义字符
     * @param event
     * @returns {*}
     */
    formalSettingSpace(event,num) {
        let a = event.target.value
        a = a.replace(/\s/g, '')
        /*const fullLength = this.getStrFullLength(a)
        let length = Number(num) * 2
        if (fullLength >  length) {
            a = a.substring(0, length)
        }*/
        a = a.replace(/\s/g, '')
        if (a.length > num) {
            a = a.substring(0, num)
        }
        return a
    },
    getStrFullLength (str = ''){
        return str.split('').reduce((pre, cur) => {
            const charCode = cur.charCodeAt(0)
            if ((charCode >= 0 && charCode <= 64) || (charCode >= 91 && charCode <= 128)) {
                return pre + 1
            }
            return pre + 2
        }, 0)
    },
    formalAutoSpace(event) {
        if(event){
            let a = event
            a = a.replace(/\s/g, '')
            if (a.length > 30) {
                a = a.substring(0, 30)
            }
            return a
        }
        return ''
    },
    /**
     * 校验输入30个字符
     * @param event
     * @returns {*}
     */
    formalSpace2(event, list) {
        let a = event.target.value
        a = a.replace(/\s/g, '')
        let flag = false
        list.forEach(item => {
            if (item.dId === a) {
                flag = true
            }
        })
        if (flag) {
            a = ''
        } else if (a.length > 30) {
            a = a.substring(0, 30)
        }
        return a
    },
    /**
     * 校验输入30个字符
     * @param event
     * @returns {*}
     */
    searchSpace2(value) {
        let b = value;
        b = b.replace(/[^/\u4e00-\u9fa5a-zA-Z0-9]/ig, '');
        if (b.length > 30) {
            b = b.substring(0, 30)
        }
        return b
    },
    /**
     * 校验输入16个字符
     * @param event
     * @returns {*}
     */
    formal16Space(event) {
        let a = event.target.value
        a = a.replace(/\s/g, '')
        if (a.length > 16) {
            a = a.substring(0, 16)
        }
        return a
    },
    /**
     * Function    : formalIP
     * Description : IP过滤器
     * Input       : none
     * Return      : none
     */
    formalIP(event) {
        let a = event.target.value
        a = a.replace(/[^\d\.]/g, '')
        let arr = a.split('.')
        let b = ''
        arr.forEach((item, index) => {
            if (item !== '') {
                if (index === arr.length - 1) {
                    b = b + Number(item)
                } else {
                    b = b + Number(item) + '.'
                }
            }
        })
        return b
    },
    /**
     * 格式化ip
     * @param value
     * @returns {string}
     */
    formalIPAdress(value) {
        let a = value
        a = a.replace(/[^\d\.]/g, '')
        let arr = a.split('.')
        let b = ''
        arr.forEach((item, index) => {
            if (item !== '') {
                if (index === arr.length - 1) {
                    b = b + Number(item)
                } else {
                    b = b + Number(item) + '.'
                }
            }
        })
        return b
    },
    /**
     * 校验输入32个字符
     * @param event
     * @returns {*}
     */
    formal32Space(event) {
        let a = event.target.value
        a = a.replace(/\s/g, '')
        if (a.length > 32) {
            a = a.substring(0, 32)
        }
        return a
    },
    /**
     * 校验输入128个字符
     * @param event
     * @returns {*}
     */
    formal128Space(event) {
        let a = event.target.value
        a = a.replace(/\s/g, '')
        if (a.length > 128) {
            a = a.substring(0, 128)
        }
        return a
    },
    /**
     * 校验输入255个字符
     * @param event
     * @returns {*}
     */
    formalhundredSpace(event) {
        let a = event.target.value
        a = a.replace(/\s/g, '')
        if (a.length > 128) {
            a = a.substring(0, 128)
        }
        return a
    },
    /**
     * 校验输入255个字符
     * @param event
     * @returns {*}
     */
    formalhundredWithOutSpace(event) {
        let a = event.target.value
        if (a.length > 128) {
            a = a.substring(0, 128)
        }
        return a
    },
     validateIpSix ( rule, value, callback ) {
        let reg = /^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*$/
        if (!value || value.trim ().length === 0) {
            callback ()
        } else if (!reg.test (value)) {
            callback (new Error ('请输入合法IPv6格式'))
        } else {
            callback ()
        }
    },
    validatenetmask ( rule, value, callback ) {
        let reg = /^(254|252|248|240|224|192|128|0)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)$/
        if (!value || value.trim ().length === 0) {
            callback ()
        } else if (!reg.test (value)) {
            callback (new Error ('请输入合法子网掩码'))
        } else {
            callback ()
        }
    },
    /**
     * 校验输入20个字符
     * @param event
     * @returns {*}
     */
    formalSpaceTwenty(event) {
        let a = event.target.value
        a = a.replace(/\s/g, '')
        if (a.length > 20) {
            a = a.substring(0, 20)
        }
        return a
    },

    /**
     * 校验只能输入6位数字
     * @param event
     * @returns {*}
     */
    formalUsb(event) {
        let a = event.target.value
        a = a.replace(/\s/g, '')
        if (a.length > 6) {
            a = a.substring(0, 6)
        }
        return a
    },
    /*formalName (event) {
        let a = event.target.value
        a = a.replace(/[`~!@#$%^&*()+=|{}':;.'"",\[\]<>/?~！@#￥%……&*（）——+|{}【】《》 ‘；：”“’。，、？]/g, '')
        if (a.length > 30) {
            a = a.substring(0, 30)
        }
        return a
    },
    formalID (event) {
        let a = event.target.value
        a = a.replace(/[`~!\u4e00-\u9fa5@#$%^&*()+=|{}':;.'"",\[\]<>/?~！@#￥%……&*（）——+|{}【】《》 ‘；：”“’。，、？]/g, '')
        if (a.length > 30) {
            a = a.substring(0, 30)
        }
        return a
    },*/
    limitDecimals(value) {
        return value.toString().replace(/^(-?\d+)\.(\d{6}).*$/, '$1.$2') //保留6位有效数字
    },
    limitTwoDecimals(value) {
        return value.toString().replace(/^(-?\d+)\.(\d{2}).*$/, '$1.$2') //保留2位有效数字
    },
    limitThreeDecimals(value) {
        return value.toString().replace(/^(-?\d+)\.(\d{3}).*$/, '$1.$2') //保留3位有效数字
    },
    limitFourDecimals(value) {
        return value.toString().replace(/^(-?\d+)\.(\d{4}).*$/, '$1.$2') //保留4位有效数字
    },
    limitOneDecimals(value) {
        return value.toString().replace(/^(-?\d+)\.(\d).*$/, '$1.$2') //保留1位有效数字
    },
    limitInteger(value) {
        return value.toString().replace(/\D/g, '')
        //return (value === '' || value === undefined) ?`${value}`:`${parseInt(value)}`  //正整数
    }
}

export default verify
